1 /* 2 3 Boost Software License - Version 1.0 - August 17th, 2003 4 5 Permission is hereby granted, free of charge, to any person or organization 6 obtaining a copy of the software and accompanying documentation covered by 7 this license (the "Software") to use, reproduce, display, distribute, 8 execute, and transmit the Software, and to prepare derivative works of the 9 Software, and to permit third-parties to whom the Software is furnished to 10 do so, all subject to the following: 11 12 The copyright notices in the Software and this entire statement, including 13 the above license grant, this restriction and the following disclaimer, 14 must be included in all copies of the Software, in whole or in part, and 15 all derivative works of the Software, unless such copies or derivative 16 works are solely in the form of machine-executable object code generated by 17 a source language processor. 18 19 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT 22 SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE 23 FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, 24 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 25 DEALINGS IN THE SOFTWARE. 26 27 */ 28 29 module derelict.purple.util; 30 31 import derelict.glib.gtypes; 32 import derelict.glib.glibconfig; 33 import derelict.glib.glist; 34 import derelict.glib.gdataset; 35 import derelict.purple.account; 36 import derelict.purple.signals; 37 import derelict.purple.notify; 38 import derelict.purple.xmlnode; 39 import core.stdc.config; 40 import core.stdc.time; 41 import core.stdc.stdio; 42 43 extern (C): 44 45 alias _PurpleUtilFetchUrlData PurpleUtilFetchUrlData; 46 alias _PurpleMenuAction PurpleMenuAction; 47 alias _PurpleKeyValuePair PurpleKeyValuePair; 48 alias char* function (const(char)*, c_ulong) PurpleInfoFieldFormatCallback; 49 alias void function (_PurpleUtilFetchUrlData*, void*, const(char)*, c_ulong, const(char)*) PurpleUtilFetchUrlCallback; 50 51 struct _PurpleMenuAction 52 { 53 char* label; 54 PurpleCallback callback; 55 gpointer data; 56 GList* children; 57 } 58 59 struct _PurpleKeyValuePair 60 { 61 gchar* key; 62 void* value; 63 } 64 65 struct _PurpleUtilFetchUrlData; 66 67 version(Derelict_Link_Static) 68 { 69 extern( C ) nothrow 70 { 71 PurpleMenuAction* purple_menu_action_new(const(char)* label, PurpleCallback callback, gpointer data, GList* children); 72 void purple_menu_action_free(PurpleMenuAction* act); 73 void purple_util_set_current_song(const(char)* title, const(char)* artist, const(char)* album); 74 char* purple_util_format_song_info(const(char)* title, const(char)* artist, const(char)* album, gpointer unused); 75 void purple_util_init(); 76 void purple_util_uninit(); 77 gchar* purple_base16_encode(const(guchar)* data, gsize len); 78 guchar* purple_base16_decode(const(char)* str, gsize* ret_len); 79 gchar* purple_base16_encode_chunked(const(guchar)* data, gsize len); 80 gchar* purple_base64_encode(const(guchar)* data, gsize len); 81 guchar* purple_base64_decode(const(char)* str, gsize* ret_len); 82 guchar* purple_quotedp_decode(const(char)* str, gsize* ret_len); 83 char* purple_mime_decode_field(const(char)* str); 84 const(char)* purple_utf8_strftime(const(char)* format, const(tm)* tm); 85 const(char)* purple_get_tzoff_str(const(tm)* tm, gboolean iso); 86 const(char)* purple_date_format_short(const(tm)* tm); 87 const(char)* purple_date_format_long(const(tm)* tm); 88 const(char)* purple_date_format_full(const(tm)* tm); 89 const(char)* purple_time_format(const(tm)* tm); 90 time_t purple_time_build(int year, int month, int day, int hour, int min, int sec); 91 time_t purple_str_to_time(const(char)* timestamp, gboolean utc, tm* tm, c_long* tz_off, const(char*)* rest); 92 gchar* purple_markup_escape_text(const(gchar)* text, gssize length); 93 gboolean purple_markup_find_tag(const(char)* needle, const(char)* haystack, const(char*)* start, const(char*)* end, GData** attributes); 94 gboolean purple_markup_extract_info_field(const(char)* str, int len, PurpleNotifyUserInfo* user_info, const(char)* start_token, int skip, const(char)* end_token, char check_value, const(char)* no_value_token, const(char)* display_name, gboolean is_link, const(char)* link_prefix, PurpleInfoFieldFormatCallback format_cb); 95 void purple_markup_html_to_xhtml(const(char)* html, char** dest_xhtml, char** dest_plain); 96 char* purple_markup_strip_html(const(char)* str); 97 char* purple_markup_linkify(const(char)* str); 98 char* purple_unescape_text(const(char)* text); 99 char* purple_unescape_html(const(char)* html); 100 char* purple_markup_slice(const(char)* str, guint x, guint y); 101 char* purple_markup_get_tag_name(const(char)* tag); 102 const(char)* purple_markup_unescape_entity(const(char)* text, int* length); 103 char* purple_markup_get_css_property(const(gchar)* style, const(gchar)* opt); 104 gboolean purple_markup_is_rtl(const(char)* html); 105 const(gchar)* purple_home_dir(); 106 const(char)* purple_user_dir(); 107 void purple_util_set_user_dir(const(char)* dir); 108 int purple_build_dir(const(char)* path, int mode); 109 gboolean purple_util_write_data_to_file(const(char)* filename, const(char)* data, gssize size); 110 gboolean purple_util_write_data_to_file_absolute(const(char)* filename_full, const(char)* data, gssize size); 111 xmlnode* purple_util_read_xml_from_file(const(char)* filename, const(char)* description); 112 FILE* purple_mkstemp(char** path, gboolean binary); 113 const(char)* purple_util_get_image_extension(gconstpointer data, size_t len); 114 char* purple_util_get_image_checksum(gconstpointer image_data, size_t image_len); 115 char* purple_util_get_image_filename(gconstpointer image_data, size_t image_len); 116 gboolean purple_program_is_valid(const(char)* program); 117 gboolean purple_running_gnome(); 118 gboolean purple_running_kde(); 119 gboolean purple_running_osx(); 120 char* purple_fd_get_ip(int fd); 121 int purple_socket_get_family(int fd); 122 gboolean purple_socket_speaks_ipv4(int fd); 123 gboolean purple_strequal(const(gchar)* left, const(gchar)* right); 124 const(char)* purple_normalize(const(PurpleAccount)* account, const(char)* str); 125 const(char)* purple_normalize_nocase(const(PurpleAccount)* account, const(char)* str); 126 gboolean purple_str_has_prefix(const(char)* s, const(char)* p); 127 gboolean purple_str_has_suffix(const(char)* s, const(char)* x); 128 gchar* purple_strdup_withhtml(const(gchar)* src); 129 char* purple_str_add_cr(const(char)* str); 130 void purple_str_strip_char(char* str, char thechar); 131 void purple_util_chrreplace(char* string, char delimiter, char replacement); 132 gchar* purple_strreplace(const(char)* string, const(char)* delimiter, const(char)* replacement); 133 char* purple_utf8_ncr_encode(const(char)* in_); 134 char* purple_utf8_ncr_decode(const(char)* in_); 135 gchar* purple_strcasereplace(const(char)* string, const(char)* delimiter, const(char)* replacement); 136 const(char)* purple_strcasestr(const(char)* haystack, const(char)* needle); 137 char* purple_str_size_to_units(size_t size); 138 char* purple_str_seconds_to_string(guint sec); 139 char* purple_str_binary_to_ascii(const(ubyte)* binary, guint len); 140 void purple_got_protocol_handler_uri(const(char)* uri); 141 gboolean purple_url_parse(const(char)* url, char** ret_host, int* ret_port, char** ret_path, char** ret_user, char** ret_passwd); 142 PurpleUtilFetchUrlData* purple_util_fetch_url_request(const(gchar)* url, gboolean full, const(gchar)* user_agent, gboolean http11, const(gchar)* request, gboolean include_headers, PurpleUtilFetchUrlCallback callback, gpointer data); 143 PurpleUtilFetchUrlData* purple_util_fetch_url_request_len(const(gchar)* url, gboolean full, const(gchar)* user_agent, gboolean http11, const(gchar)* request, gboolean include_headers, gssize max_len, PurpleUtilFetchUrlCallback callback, gpointer data); 144 PurpleUtilFetchUrlData* purple_util_fetch_url_request_len_with_account(PurpleAccount* account, const(gchar)* url, gboolean full, const(gchar)* user_agent, gboolean http11, const(gchar)* request, gboolean include_headers, gssize max_len, PurpleUtilFetchUrlCallback callback, gpointer data); 145 void purple_util_fetch_url_cancel(PurpleUtilFetchUrlData* url_data); 146 const(char)* purple_url_decode(const(char)* str); 147 const(char)* purple_url_encode(const(char)* str); 148 gboolean purple_email_is_valid(const(char)* address); 149 gboolean purple_ip_address_is_valid(const(char)* ip); 150 gboolean purple_ipv4_address_is_valid(const(char)* ip); 151 gboolean purple_ipv6_address_is_valid(const(char)* ip); 152 GList* purple_uri_list_extract_uris(const(gchar)* uri_list); 153 GList* purple_uri_list_extract_filenames(const(gchar)* uri_list); 154 gchar* purple_utf8_try_convert(const(char)* str); 155 gchar* purple_utf8_salvage(const(char)* str); 156 gchar* purple_utf8_strip_unprintables(const(gchar)* str); 157 const(gchar)* purple_gai_strerror(gint errnum); 158 int purple_utf8_strcasecmp(const(char)* a, const(char)* b); 159 gboolean purple_utf8_has_word(const(char)* haystack, const(char)* needle); 160 void purple_print_utf8_to_console(FILE* filestream, char* message); 161 gboolean purple_message_meify(char* message, gssize len); 162 char* purple_text_strip_mnemonic(const(char)* in_); 163 const(char)* purple_unescape_filename(const(char)* str); 164 const(char)* purple_escape_filename(const(char)* str); 165 const(char)* _purple_oscar_convert(const(char)* act, const(char)* protocol); 166 void purple_restore_default_signal_handlers(); 167 const(gchar)* purple_get_host_name(); 168 gchar* purple_uuid_random(); 169 } 170 } 171 else 172 { 173 extern( C ) nothrow 174 { 175 alias da_purple_menu_action_new = PurpleMenuAction* function(const(char)* label, PurpleCallback callback, gpointer data, GList* children); 176 alias da_purple_menu_action_free = void function(PurpleMenuAction* act); 177 alias da_purple_util_set_current_song = void function(const(char)* title, const(char)* artist, const(char)* album); 178 alias da_purple_util_format_song_info = char* function(const(char)* title, const(char)* artist, const(char)* album, gpointer unused); 179 alias da_purple_util_init = void function(); 180 alias da_purple_util_uninit = void function(); 181 alias da_purple_base16_encode = gchar* function(const(guchar)* data, gsize len); 182 alias da_purple_base16_decode = guchar* function(const(char)* str, gsize* ret_len); 183 alias da_purple_base16_encode_chunked = gchar* function(const(guchar)* data, gsize len); 184 alias da_purple_base64_encode = gchar* function(const(guchar)* data, gsize len); 185 alias da_purple_base64_decode = guchar* function(const(char)* str, gsize* ret_len); 186 alias da_purple_quotedp_decode = guchar* function(const(char)* str, gsize* ret_len); 187 alias da_purple_mime_decode_field = char* function(const(char)* str); 188 alias da_purple_utf8_strftime = const(char)* function(const(char)* format, const(tm)* tm); 189 alias da_purple_get_tzoff_str = const(char)* function(const(tm)* tm, gboolean iso); 190 alias da_purple_date_format_short = const(char)* function(const(tm)* tm); 191 alias da_purple_date_format_long = const(char)* function(const(tm)* tm); 192 alias da_purple_date_format_full = const(char)* function(const(tm)* tm); 193 alias da_purple_time_format = const(char)* function(const(tm)* tm); 194 alias da_purple_time_build = time_t function(int year, int month, int day, int hour, int min, int sec); 195 alias da_purple_str_to_time = time_t function(const(char)* timestamp, gboolean utc, tm* tm, c_long* tz_off, const(char*)* rest); 196 alias da_purple_markup_escape_text = gchar* function(const(gchar)* text, gssize length); 197 alias da_purple_markup_find_tag = gboolean function(const(char)* needle, const(char)* haystack, const(char*)* start, const(char*)* end, GData** attributes); 198 alias da_purple_markup_extract_info_field = gboolean function(const(char)* str, int len, PurpleNotifyUserInfo* user_info, const(char)* start_token, int skip, const(char)* end_token, char check_value, const(char)* no_value_token, const(char)* display_name, gboolean is_link, const(char)* link_prefix, PurpleInfoFieldFormatCallback format_cb); 199 alias da_purple_markup_html_to_xhtml = void function(const(char)* html, char** dest_xhtml, char** dest_plain); 200 alias da_purple_markup_strip_html = char* function(const(char)* str); 201 alias da_purple_markup_linkify = char* function(const(char)* str); 202 alias da_purple_unescape_text = char* function(const(char)* text); 203 alias da_purple_unescape_html = char* function(const(char)* html); 204 alias da_purple_markup_slice = char* function(const(char)* str, guint x, guint y); 205 alias da_purple_markup_get_tag_name = char* function(const(char)* tag); 206 alias da_purple_markup_unescape_entity = const(char)* function(const(char)* text, int* length); 207 alias da_purple_markup_get_css_property = char* function(const(gchar)* style, const(gchar)* opt); 208 alias da_purple_markup_is_rtl = gboolean function(const(char)* html); 209 alias da_purple_home_dir = const(gchar)* function(); 210 alias da_purple_user_dir = const(char)* function(); 211 alias da_purple_util_set_user_dir = void function(const(char)* dir); 212 alias da_purple_build_dir = int function(const(char)* path, int mode); 213 alias da_purple_util_write_data_to_file = gboolean function(const(char)* filename, const(char)* data, gssize size); 214 alias da_purple_util_write_data_to_file_absolute = gboolean function(const(char)* filename_full, const(char)* data, gssize size); 215 alias da_purple_util_read_xml_from_file = xmlnode* function(const(char)* filename, const(char)* description); 216 alias da_purple_mkstemp = FILE* function(char** path, gboolean binary); 217 alias da_purple_util_get_image_extension = const(char)* function(gconstpointer data, size_t len); 218 alias da_purple_util_get_image_checksum = char* function(gconstpointer image_data, size_t image_len); 219 alias da_purple_util_get_image_filename = char* function(gconstpointer image_data, size_t image_len); 220 alias da_purple_program_is_valid = gboolean function(const(char)* program); 221 alias da_purple_running_gnome = gboolean function(); 222 alias da_purple_running_kde = gboolean function(); 223 alias da_purple_running_osx = gboolean function(); 224 alias da_purple_fd_get_ip = char* function(int fd); 225 alias da_purple_socket_get_family = int function(int fd); 226 alias da_purple_socket_speaks_ipv4 = gboolean function(int fd); 227 alias da_purple_strequal = gboolean function(const(gchar)* left, const(gchar)* right); 228 alias da_purple_normalize = const(char)* function(const(PurpleAccount)* account, const(char)* str); 229 alias da_purple_normalize_nocase = const(char)* function(const(PurpleAccount)* account, const(char)* str); 230 alias da_purple_str_has_prefix = gboolean function(const(char)* s, const(char)* p); 231 alias da_purple_str_has_suffix = gboolean function(const(char)* s, const(char)* x); 232 alias da_purple_strdup_withhtml = gchar* function(const(gchar)* src); 233 alias da_purple_str_add_cr = char* function(const(char)* str); 234 alias da_purple_str_strip_char = void function(char* str, char thechar); 235 alias da_purple_util_chrreplace = void function(char* string, char delimiter, char replacement); 236 alias da_purple_strreplace = gchar* function(const(char)* string, const(char)* delimiter, const(char)* replacement); 237 alias da_purple_utf8_ncr_encode = char* function(const(char)* in_); 238 alias da_purple_utf8_ncr_decode = char* function(const(char)* in_); 239 alias da_purple_strcasereplace = gchar* function(const(char)* string, const(char)* delimiter, const(char)* replacement); 240 alias da_purple_strcasestr = const(char)* function(const(char)* haystack, const(char)* needle); 241 alias da_purple_str_size_to_units = char* function(size_t size); 242 alias da_purple_str_seconds_to_string = char* function(guint sec); 243 alias da_purple_str_binary_to_ascii = char* function(const(ubyte)* binary, guint len); 244 alias da_purple_got_protocol_handler_uri = void function(const(char)* uri); 245 alias da_purple_url_parse = gboolean function(const(char)* url, char** ret_host, int* ret_port, char** ret_path, char** ret_user, char** ret_passwd); 246 alias da_purple_util_fetch_url_request = PurpleUtilFetchUrlData* function(const(gchar)* url, gboolean full, const(gchar)* user_agent, gboolean http11, const(gchar)* request, gboolean include_headers, PurpleUtilFetchUrlCallback callback, gpointer data); 247 alias da_purple_util_fetch_url_request_len = PurpleUtilFetchUrlData* function(const(gchar)* url, gboolean full, const(gchar)* user_agent, gboolean http11, const(gchar)* request, gboolean include_headers, gssize max_len, PurpleUtilFetchUrlCallback callback, gpointer data); 248 alias da_purple_util_fetch_url_request_len_with_account = PurpleUtilFetchUrlData* function(PurpleAccount* account, const(gchar)* url, gboolean full, const(gchar)* user_agent, gboolean http11, const(gchar)* request, gboolean include_headers, gssize max_len, PurpleUtilFetchUrlCallback callback, gpointer data); 249 alias da_purple_util_fetch_url_cancel = void function(PurpleUtilFetchUrlData* url_data); 250 alias da_purple_url_decode = const(char)* function(const(char)* str); 251 alias da_purple_url_encode = const(char)* function(const(char)* str); 252 alias da_purple_email_is_valid = gboolean function(const(char)* address); 253 alias da_purple_ip_address_is_valid = gboolean function(const(char)* ip); 254 alias da_purple_ipv4_address_is_valid = gboolean function(const(char)* ip); 255 alias da_purple_ipv6_address_is_valid = gboolean function(const(char)* ip); 256 alias da_purple_uri_list_extract_uris = GList* function(const(gchar)* uri_list); 257 alias da_purple_uri_list_extract_filenames = GList* function(const(gchar)* uri_list); 258 alias da_purple_utf8_try_convert = gchar* function(const(char)* str); 259 alias da_purple_utf8_salvage = gchar* function(const(char)* str); 260 alias da_purple_utf8_strip_unprintables = gchar* function(const(gchar)* str); 261 alias da_purple_gai_strerror = const(gchar)* function(gint errnum); 262 alias da_purple_utf8_strcasecmp = int function(const(char)* a, const(char)* b); 263 alias da_purple_utf8_has_word = gboolean function(const(char)* haystack, const(char)* needle); 264 alias da_purple_print_utf8_to_console = void function(FILE* filestream, char* message); 265 alias da_purple_message_meify = gboolean function(char* message, gssize len); 266 alias da_purple_text_strip_mnemonic = char* function(const(char)* in_); 267 alias da_purple_unescape_filename = const(char)* function(const(char)* str); 268 alias da_purple_escape_filename = const(char)* function(const(char)* str); 269 alias da__purple_oscar_convert = const(char)* function(const(char)* act, const(char)* protocol); 270 alias da_purple_restore_default_signal_handlers = void function(); 271 alias da_purple_get_host_name = const(gchar)* function(); 272 alias da_purple_uuid_random = gchar* function(); 273 } 274 275 __gshared 276 { 277 da_purple_menu_action_new purple_menu_action_new; 278 da_purple_menu_action_free purple_menu_action_free; 279 da_purple_util_set_current_song purple_util_set_current_song; 280 da_purple_util_format_song_info purple_util_format_song_info; 281 da_purple_util_init purple_util_init; 282 da_purple_util_uninit purple_util_uninit; 283 da_purple_base16_encode purple_base16_encode; 284 da_purple_base16_decode purple_base16_decode; 285 da_purple_base16_encode_chunked purple_base16_encode_chunked; 286 da_purple_base64_encode purple_base64_encode; 287 da_purple_base64_decode purple_base64_decode; 288 da_purple_quotedp_decode purple_quotedp_decode; 289 da_purple_mime_decode_field purple_mime_decode_field; 290 da_purple_utf8_strftime purple_utf8_strftime; 291 da_purple_get_tzoff_str purple_get_tzoff_str; 292 da_purple_date_format_short purple_date_format_short; 293 da_purple_date_format_long purple_date_format_long; 294 da_purple_date_format_full purple_date_format_full; 295 da_purple_time_format purple_time_format; 296 da_purple_time_build purple_time_build; 297 da_purple_str_to_time purple_str_to_time; 298 da_purple_markup_escape_text purple_markup_escape_text; 299 da_purple_markup_find_tag purple_markup_find_tag; 300 da_purple_markup_extract_info_field purple_markup_extract_info_field; 301 da_purple_markup_html_to_xhtml purple_markup_html_to_xhtml; 302 da_purple_markup_strip_html purple_markup_strip_html; 303 da_purple_markup_linkify purple_markup_linkify; 304 da_purple_unescape_text purple_unescape_text; 305 da_purple_unescape_html purple_unescape_html; 306 da_purple_markup_slice purple_markup_slice; 307 da_purple_markup_get_tag_name purple_markup_get_tag_name; 308 da_purple_markup_unescape_entity purple_markup_unescape_entity; 309 da_purple_markup_get_css_property purple_markup_get_css_property; 310 da_purple_markup_is_rtl purple_markup_is_rtl; 311 da_purple_home_dir purple_home_dir; 312 da_purple_user_dir purple_user_dir; 313 da_purple_util_set_user_dir purple_util_set_user_dir; 314 da_purple_build_dir purple_build_dir; 315 da_purple_util_write_data_to_file purple_util_write_data_to_file; 316 da_purple_util_write_data_to_file_absolute purple_util_write_data_to_file_absolute; 317 da_purple_util_read_xml_from_file purple_util_read_xml_from_file; 318 da_purple_mkstemp purple_mkstemp; 319 da_purple_util_get_image_extension purple_util_get_image_extension; 320 da_purple_util_get_image_checksum purple_util_get_image_checksum; 321 da_purple_util_get_image_filename purple_util_get_image_filename; 322 da_purple_program_is_valid purple_program_is_valid; 323 da_purple_running_gnome purple_running_gnome; 324 da_purple_running_kde purple_running_kde; 325 da_purple_running_osx purple_running_osx; 326 da_purple_fd_get_ip purple_fd_get_ip; 327 da_purple_socket_get_family purple_socket_get_family; 328 da_purple_socket_speaks_ipv4 purple_socket_speaks_ipv4; 329 da_purple_strequal purple_strequal; 330 da_purple_normalize purple_normalize; 331 da_purple_normalize_nocase purple_normalize_nocase; 332 da_purple_str_has_prefix purple_str_has_prefix; 333 da_purple_str_has_suffix purple_str_has_suffix; 334 da_purple_strdup_withhtml purple_strdup_withhtml; 335 da_purple_str_add_cr purple_str_add_cr; 336 da_purple_str_strip_char purple_str_strip_char; 337 da_purple_util_chrreplace purple_util_chrreplace; 338 da_purple_strreplace purple_strreplace; 339 da_purple_utf8_ncr_encode purple_utf8_ncr_encode; 340 da_purple_utf8_ncr_decode purple_utf8_ncr_decode; 341 da_purple_strcasereplace purple_strcasereplace; 342 da_purple_strcasestr purple_strcasestr; 343 da_purple_str_size_to_units purple_str_size_to_units; 344 da_purple_str_seconds_to_string purple_str_seconds_to_string; 345 da_purple_str_binary_to_ascii purple_str_binary_to_ascii; 346 da_purple_got_protocol_handler_uri purple_got_protocol_handler_uri; 347 da_purple_url_parse purple_url_parse; 348 da_purple_util_fetch_url_request purple_util_fetch_url_request; 349 da_purple_util_fetch_url_request_len purple_util_fetch_url_request_len; 350 da_purple_util_fetch_url_request_len_with_account purple_util_fetch_url_request_len_with_account; 351 da_purple_util_fetch_url_cancel purple_util_fetch_url_cancel; 352 da_purple_url_decode purple_url_decode; 353 da_purple_url_encode purple_url_encode; 354 da_purple_email_is_valid purple_email_is_valid; 355 da_purple_ip_address_is_valid purple_ip_address_is_valid; 356 da_purple_ipv4_address_is_valid purple_ipv4_address_is_valid; 357 da_purple_ipv6_address_is_valid purple_ipv6_address_is_valid; 358 da_purple_uri_list_extract_uris purple_uri_list_extract_uris; 359 da_purple_uri_list_extract_filenames purple_uri_list_extract_filenames; 360 da_purple_utf8_try_convert purple_utf8_try_convert; 361 da_purple_utf8_salvage purple_utf8_salvage; 362 da_purple_utf8_strip_unprintables purple_utf8_strip_unprintables; 363 da_purple_gai_strerror purple_gai_strerror; 364 da_purple_utf8_strcasecmp purple_utf8_strcasecmp; 365 da_purple_utf8_has_word purple_utf8_has_word; 366 da_purple_print_utf8_to_console purple_print_utf8_to_console; 367 da_purple_message_meify purple_message_meify; 368 da_purple_text_strip_mnemonic purple_text_strip_mnemonic; 369 da_purple_unescape_filename purple_unescape_filename; 370 da_purple_escape_filename purple_escape_filename; 371 da__purple_oscar_convert _purple_oscar_convert; 372 da_purple_restore_default_signal_handlers purple_restore_default_signal_handlers; 373 da_purple_get_host_name purple_get_host_name; 374 da_purple_uuid_random purple_uuid_random; 375 } 376 }